1. Field of the Invention
This invention relates generally to data access, and more particularly to data access by multiple system nodes.
2. Description of the Related Art
As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option available to users is information handling systems. An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems.
In modern computing architectures, applications execute on information handling systems configured as server nodes that access data stored on attached storage devices. Examples of server/storage architectures include storage area network (SAN), network attached storage (NAS) and direct attached storage (DAS) architectures. Many current applications utilize a shared-nothing architecture, meaning that the same data cannot be accessed by more than one application server node at a time. Examples of applications having a shared nothing architecture include MS SQL Server, MS Exchange, MySQL, etc. Because only one node is allowed to access a particular shared data at a time, shared nothing applications make application scale-out among multiple nodes difficult and cumbersome to implement. Due to difficulties involved with accessing shared nothing data from multiple server nodes, bandwidth is sometimes increased by scaling up the power of a single server node (e.g., up to 64 processors) rather than by scaling out application service capacity using multiple lower capacity server nodes (e.g., having up to 4 processors each). However, scaling up a server node means increasing the number of processors and complexity of the server. This serves to increase the cost of a server node, making it less flexible and more likely that it will be underutilized in some application serving environments.
Several conventional techniques have been implemented in an attempt to facilitate server scale out. In one of these conventional methods, two or more users are enabled to use two or more databases in active mode, with each acting as a real-time failover for the other. However, such a technique involves database replication and excludes shared storage. Database partitioning is another conventional methodology that has been employed in an attempt to scale out databases. However, when data is partitioned at the database level, one node cannot access a partition owned by another node, i.e., an application which is connected to one partition cannot access data from another partition. Furthermore, it is sometimes difficult to effectively physically partition a database due to interdependencies within the structures. A web server environment is another example of conventional scale out methodology. However, such an environment uses data replication and almost real time data synchronization. In yet another method for enabling scale out among multiple networked server nodes, when a requesting server node desires to access a requested piece of data, all other networked server nodes are queried to see if the data is contained within the memory of one of the networked server nodes. If the data is contained within the memory of one of the server nodes, it is fetched from the memory of the server node by the requesting server node for use.